// 题目精炼说明
// 给定若干个仅包含小写字母的字符串，问能否通过某种排列顺序拼接，使得拼接后的大字符串是非递减字典序（即每个字符都不小于前一个字符）。
// 对于每组测试数据，输出1表示可以，输出0表示不可以。

// 代码逻辑说明
// 排序：将所有字符串按字典序排序。
// 拼接：依次拼接排序后的字符串。
// 检查：判断拼接后的字符串是否每个字符都不小于前一个字符。
// 输出：如果满足条件输出1，否则输出0。
// 结论
// 只要将字符串按字典序排序后拼接，检查拼接结果是否为非递减即可。
// 这种方法保证了只要有一种可行顺序就能找到。

#include<bits/stdc++.h>
using namespace std;
string s[110];

// 冒泡排序，将字符串数组按字典序从小到大排序
void bubble_sort(string *a, int n) {
    bool flag = true;
    while (flag) {
        flag = false;
        for (int i = 1; i < n; ++i) {
            if (a[i] > a[i + 1]) {
                flag = true;
                string t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }
}

int main(){
    int t;
    cin>>t; // 读入测试组数
    while(t--){
        int n;
        cin>>n; // 读入本组字符串数量
        for(int i=1;i<=n;i++){
            cin>>s[i]; // 读入每个字符串
        }
        bubble_sort(s, n); // 按字典序排序
        string t="";
        for(int i=1;i<=n;i++){
            t+=s[i]; // 拼接所有字符串
        }
        int m = t.size();
        int fl=1; // 标记是否满足条件
        for(int i=1;i<m;i++){
            if(t[i]<t[i-1]){ // 如果有字符小于前一个，说明不是非递减
                fl=0;
                break;
            }
        }
        cout<<fl<<"\n"; // 输出结果
    }
}

